/**
 * 比较  额外:可同进制($.radix<=62进制)
 * @param a string|number 第一个值
 * @param b string|number 第二个值
 * @param x int 返回方式 0:比较,返回:0|1|-1
 * 		1:返回较大值a|b,  -1:返回较小值a|b
 * @return int|string  0:相等,1:a大,-1:b大
 * 		string: a|b,格式化整数前小数后的0
 */
$.bcCom = function(a, b, x=0){
	const COM = function(a,b){
		if(a[0]!==b[0]) return b[0] ? 1 : -1;
		let [A, B] = a[0] ? [-1,1] : [1,-1];
		if(a[1]!==b[1]){
			let m=a[1].length, n=b[1].length;
			return (m===n?a[1]>b[1]:(m>n)) ? A : B;
		}
		if(a[2]===b[2]) return 0;
		let ad=a[3], bd=b[2], al=ad.length, bl=bd.length;
		for(let i=0,m=Math.min(al,bl); i<m; i++){
			if(ad[i]!==bd[i]) return ad[i]>bd[i] ? A : B;
		}
		return al>bl ? A : B;
	};
	$.bcCom = function(a, b, x=0){
		let A=$.bcArr(a), B=$.bcArr(b), v=COM(A,B);
		if(x!==1 && x!==-1) return v;  v=x===v?A:B;
		return v[0]+(v[1]||'0')+(v[2]?'.'+v[2]:'');
	};
	return $.bcCom(a, b, x);
};
